
#include "main.h"
 
#include "public.h"


//
//
//
//
////=============== 启动粗扫  初始化参数==========================================
//void run_first(void)
//{
//u16  i;  
//
//
//  
////  gc.u16DC_volt_set = 30;//设置电压gc.s16power_set_val =30;          //设定初扫电压 10-30
////  gc.s32work_volt_K =0;         //清除电压闭环系数 
////  gc.s32ISum=0;                 //当开始扫描时恢电压积分值，避免开机后主动进入初扫
//  
////  gc.u32first_scan_center = gc.u32sysfreq *gc.Freq_K ;            //粗扫 中心频率 
////  gc.u32first_scan_span =600*gc.Freq_K;                           //粗扫 +-600hz
////  gc.u32first_scan_span_H = gc.u32first_scan_center+gc.u32first_scan_span;
////  gc.u32first_scan_span_L = gc.u32first_scan_center-gc.u32first_scan_span;
//  
//
//  gc.u32Current_freq=gc.u32first_scan_span_H;        //赋扫描初始值 从高频往低频扫 
//  
//  Freq_update();
//  
//  
//  gc.first_F_Adj_Period = 2;//扫频时调整频率 的时间间隔 ms
//  gc.first_F_Adj_bit = 2*gc.Freq_K;      //扫频时调整 HZ  
//
//
//
//  gc.s32first_freq_offset =0;//追频修正值    主要是振子温漂
//  
//
//  gc.u16Scan_current_1ms_cnt=0;//复位电流检测时间
//
//  gc.delay_ms_cnt =0;         //复位扫频延时
//  gc.delay_time_ms =300;      //粗扫延时300ms 加bit 
//  gc.time_delay_filish =0;    //复位扫频延时 
//  gc.time_delay_filish_last=0;//上个循环延时到了标志
//
//  
//
//
//  gc.u8first_scan_current1_sample_f = 0;//进入扫描时,采样频率上限时的电流值的标志作为靠近谐振点的依据
//  
//  gc.u32first_scan_av_current_max = 0;
//  gc.u32first_scan_av_current_min =300;//进入扫描后移动平均电流值最小值
//  gc.u32first_scan_maxcurrent_freq = gc.u32first_scan_center;//赋初值
//  gc.u32first_scan_mincurrent_freq = gc.u32first_scan_center;//赋初值  
//
//  
//
//
//  gc.u8first_scan_freq_F =0;            // 0未进入谐振范围    1进入谐振范围
//  
//  gc.u8first_scan_freq_cnt=0;           //扫频进入谐振范围后定定时加频率，直到低于电流<200 
//
//  for( i=0; i<155; i++ )
//  {
//    gc.u32Adc_CH4[i] = 0;
//  } 
//  for( i=0; i<155; i++ )
//  {
//    gc.u32Adc_CH5[i] = 0;
//  }   
//
//  gc.u8first_scan_en=1;                 //扫频使能
//  
//
////-------------------------------------------------- 
//
//
//  
//  
//}
////==============================================================================
//
//
//
//
////==============first===========================================================
//void first_f_adj( void )    //扫频  粗扫阶段 
//{
//static u8  freq_time_cnt=0; 
//static u32  u32CurrentSum=0;
//        u16  i;
//        u16  u16ADC_val;
//        s32 s32av_Sum;
//
//     if( gc.u16Scan_current_1ms_cnt < 1 ) //1ms 扫描一次 ，根据需要调节时间
//     {  return;}
//     gc.u16Scan_current_1ms_cnt = 0;      //清零
//     
//     
//     WAVE_OUTPUT_cmd( ENABLE);  
//  
////========================扫频模式显示默认频率 ，之后显示功率系数  
//     
//
//
//     u16ADC_val  = Read_Adc_value( ADC_Channel_4 );  //切换通道先才一次样丢掉
//     s32av_Sum = 0;      //1ms 进来读一次电流
//     
//
//     
//     for( i=0; i<4; i++ )
//     {
//         u16ADC_val  = Read_Adc_value( ADC_Channel_4 );  //读通道 PA0的 AD值  电流值
//         s32av_Sum += (u32)u16ADC_val;  //读通道 PA0的 AD值  电流值
//     }
//     gc.s32work_FeedCurrent  = s32av_Sum >>2; 
//     
//
//     
//     
//        
////--------------------------------移动赋值 ad-----------------------------------      
//     for( i=40; i>1; i-- )
//     {
//        gc.u32Adc_CH4[i-1] = gc.u32Adc_CH4[i-2];
//     }   
//     gc.u32Adc_CH4[0] =gc.s32work_FeedCurrent;     //输出电流
//     
//     
//     
//     
//     
////--------------------------------采第一级电流-----------------------------------------     
//     u16ADC_val  = Read_Adc_value( ADC_Channel_5 );  //切换通道先才一次样丢掉
//     
//     u32CurrentSum = 0;      //1ms 进来读一次电流
//     for( i=0; i<4; i++ )
//     {
//       u16ADC_val  = Read_Adc_value( ADC_Channel_5 );  //读通道 PA0的 AD值  电流值
//       u32CurrentSum += (u32)u16ADC_val;  //读通道 PA0的 AD值  电流值
//     }
//     gc.s32FeedCurrent  = u32CurrentSum /i;
//
////--------------------------------移动赋值 ad-----------------------------------      
//     for( i=40; i>1; i-- )
//     {
//        gc.u32Adc_CH5[i-1] = gc.u32Adc_CH5[i-2];
//     }   
//     gc.u32Adc_CH5[0] =gc.s32FeedCurrent;       //第一级电流
//     
//     
//     
//     
//
////----------------------------采ad 可插入电流判断 过流过功率保护----------------
//
//     if ( (gc.u32Adc_CH5[0] +gc.u32Adc_CH5[1])/2 > gc.u16work_max_power*13/10 ) //当连续采样两次平均功率大于最大 -- 功率 -- 限制的1.3倍时进入待机并报错
//     {
//        gc.Work_cmd =0;   //扫频 粗扫失败关机    
//        gc.u32Current_freq = (gc.u32sysfreq+2)*gc.Freq_K;
//        //可在这里置一个故障标志位
//        test_short_press =0;
//        
//
//        err_handle(10011);//追频时过功率 
//        
//        return;     
//     }
//     
//     if (  (gc.u32Adc_CH4[0] +gc.u32Adc_CH4[1])/2  > gc.s32work_FeedCurrent_limit_bit*13/10 ) //当输出电流大于最大 -- 电流 -- 限制的1.3倍时进入待机并报错
//     {
//        gc.Work_cmd =0;   //扫频 粗扫失败关机    
//        gc.u32Current_freq = (gc.u32sysfreq+2)*gc.Freq_K;
//        //可在这里置一个故障标志位
//        test_short_press =0;
//
//        err_handle(10012);//追频时输出过电流
//        return;     
//     }
//
//
////--------------------------延时----------------------------------    
//     time_delay_ms(  );                 //开机延时300 
//
//      if( gc.time_delay_filish ==1  )     //开机延时完成   
//      {   
//        if (   gc.time_delay_filish_last==0  )//第一次进入
//        {
//            gc.time_delay_filish_last=gc.time_delay_filish;  
//            gc.u32first_scan_current1 = gc.u32Adc_CH4[0]; //延时到了以后,保存这个时候的输出电流值---备用
//            
//            gc.u32work_noload_current=gc.u32Adc_CH4[0];//在高频工作不谐振时的电流.在工作状态时会用到
//            
//            
//            
//            
//            gc.u32first_scan_av_current_min=gc.u32first_scan_current1;
//            gc.u32first_scan_av_current_max=0;
//            
//
//
//
//
////=========================开路检测  待调试 ====================================          
//            if ( gc.u32first_scan_current1 <=0)//30  ) //待调试 确定值和处理方案
//            {
//            gc.Work_cmd =0;   //扫频 粗扫失败关机    
//            gc.u32Current_freq = (gc.u32sysfreq+1)*gc.Freq_K;       
//            test_short_press =0; //清除测试开关指令
//            err_handle(10010);//系统错误值未连接振子
//            return;
//            }        
//        
//        }
//
//          
////------------------------------------ 找最大值并记录 ---------------------------      
//        gc.u32first_scan_av_current_new = ( gc.u32Adc_CH4[0] +gc.u32Adc_CH4[1] )/2;
//        if (gc.u32first_scan_av_current_new > gc.u32first_scan_av_current_max+3 )//延时到了以后,开始找最大值并记录同时记录频率
//        {
//          gc.u32first_scan_av_current_max = gc.u32first_scan_av_current_new;
//          gc.u32first_scan_maxcurrent_freq = gc.u32Current_freq;
//        }
//        
////------------------------------------ 找最小值并记录 ---------------------------  
//        
//        if ( gc.u32first_scan_av_current_min <=10)
//        {
//          gc.u32first_scan_av_current_min=10;
//        }
//        
//
//        if (gc.u32first_scan_av_current_new < gc.u32first_scan_av_current_min-3 )//延时到了以后,开始找最大值并记录同时记录频率
//        {
//          gc.u32first_scan_av_current_min = gc.u32first_scan_av_current_new;
//          gc.u32first_scan_mincurrent_freq = gc.u32Current_freq;
//        }        
//          
////------------------------------------------------------------------------------         
//
//          freq_time_cnt ++;
//          if( freq_time_cnt >= gc.first_F_Adj_Period ) //  2ms 调一次占空比
//          {
//            freq_time_cnt =0;
//
//            first_f_scan();           //调用扫频 
//          }
//    }
//    
////=============================================================================
//}
//
//
//
////===========================粗扫  和结果处理 =================================
//void first_f_scan(void)
//{
//
////   s32 s32av_Sum;     
////   u8  Q_F; //实时相位值 超谐振范围 标志 0超谐振范围1在谐振范围
////========================================================================
//  
//  if (  gc.u8first_scan_freq_F == 0 )
//  {
//    
////=================================过电流=======================================    
//    if( (gc.u32Adc_CH4[0] +gc.u32Adc_CH4[1])/2 > gc.s32work_FeedCurrent_limit_bit*15/10 ) // 
//    {
//      gc.u8first_scan_en=0;     //扫频使能
//      gc.Work_cmd =0;           //扫频 粗扫失败关机    
//      gc.u32Current_freq = (gc.u32sysfreq+1)*gc.Freq_K;       
//      test_short_press =0;//清除测试开关指令
//      err_handle(10003);      
//    }    
//        
////=================================扫频扫到头=======================================     
//    if( gc.u32Current_freq  <=  gc.u32first_scan_span_L   ) // 当扫频扫到头还没扫到设定值时 
//    {
//
//        if(  gc.u32first_scan_mincurrent_freq  >=  gc.u32first_scan_span_L+50  && gc.u32first_scan_maxcurrent_freq <=  gc.u32first_scan_span_H+50)//同时不靠近两端极限
//        {
//          
//          gc.u8first_scan_en=0;          //扫频使能
//
//          gc.first_scan_Result_freq = gc.u32first_scan_maxcurrent_freq;//=======频率定在谐振点右侧75hz处 ，以最大电流时的频率为谐振点
//          
//          gc.s32first_series_parallel_freq_error=gc.u32first_scan_mincurrent_freq -gc.u32first_scan_maxcurrent_freq;//串并联谐振点的频率差
//          
////          if (  gc.s32first_series_parallel_freq_error < gc.u16solder_Freq_span/2  )//扫描失败报错 条件应该有一定频率差  焊头频率宽度50%
////          {
////            gc.s32first_series_parallel_freq_error = gc.u16solder_Freq_span/2;
////            err_handle(10004);      //扫描失败报错 串并联谐振点的频率差不正常
////          }
////          if (  gc.s32first_series_parallel_freq_error >gc.u16solder_Freq_span*3/2 )//扫描失败报错 条件应该有一定频率差 焊头频率宽度150%
////          {
////            gc.s32first_series_parallel_freq_error = gc.u16solder_Freq_span*3/2;
////            err_handle(10004);      //扫描失败报错 串并联谐振点的频率差不正常
////          }
//          
//          if (  gc.s32first_series_parallel_freq_error >=50  && gc.s32first_series_parallel_freq_error <=1500     )//当首次烧程序，未设置设备偏移值时 默认为串并联谐振点的差值
//          { 
//            if ( gc.s32work_freq_offset == 0      )//当首次烧程序，未设置设备偏移值时 默认为串并联谐振点的差值
//            {
//              gc.s32work_freq_offset = gc.first_scan_Result_freq+gc.s32first_series_parallel_freq_error;
//            }
//              
//            gc.u32Current_freq = gc.u32first_scan_maxcurrent_freq+gc.s32first_series_parallel_freq_error*1/3;// 频率提高到焊头频率宽度的1/4后，50ms 后采相位  ，以最大电流时的频率为谐振点
//            gc.u8first_scan_freq_F=1;    //扫频进入谐振范围
//            gc.delay_ms_cnt =0;          //复用这个计数器             
//              
//          }         
//          else
//          {
//          
//            gc.u8first_scan_en=0;     //扫频使能
//            gc.Work_cmd =0;           //扫频 粗扫失败关机    
//            gc.u32Current_freq = (gc.u32sysfreq+1)*gc.Freq_K;       
//            test_short_press =0;//清除测试开关指令
//            err_handle(10004);      //扫描失败报错 串并联谐振点的频率差不正常            
//            
//          }          
//          
//        }
//        else
//        {
//          gc.u8first_scan_en=0;     //扫频使能
//          gc.Work_cmd =0;           //扫频 粗扫失败关机    
//          gc.u32Current_freq = (gc.u32sysfreq+1)*gc.Freq_K;       
//          test_short_press =0;//清除测试开关指令
//          err_handle(10003);      //系统错误值 没有明显谐振点
//        }
//
//
//    } 
//
//
//    
//
////----------------------- 降频扫描 -------------------------------------   
//    if ( gc.u8first_scan_en==1 )
//    {
//      gc.u32Current_freq -= gc.first_F_Adj_bit; //降频扫描   
//    }
//  
//////----------------------------扫到谐振点右沿---------------------------------------
//    if ( ( gc.u32Adc_CH4[0]
//        +gc.u32Adc_CH4[1] )/2 > gc.first_f_val_ref )    //当电流 > 设定值,确定为谐振点右侧
//    {
//      gc.u8first_scan_en=0;                             //扫频使能
//
//      gc.first_scan_Result_freq = gc.u32Current_freq;//=======频率定在谐振点右侧60hz处  以此时的频率为谐振点
//      
//      gc.s32first_series_parallel_freq_error=gc.u32first_scan_mincurrent_freq -gc.u32first_scan_maxcurrent_freq;//串并联谐振点的频率差
////-------------------------判断串并联谐振点频率点差---------------------------------      
//   
//      if (  gc.s32first_series_parallel_freq_error >=50  && gc.s32first_series_parallel_freq_error <=1500     )//当首次烧程序，未设置设备偏移值时 默认为串并联谐振点的差值
//      { 
//        if ( gc.s32work_freq_offset == 0      )//当首次烧程序，未设置设备偏移值时 默认为串并联谐振点的差值
//        {
//          gc.s32work_freq_offset = gc.first_scan_Result_freq+gc.s32first_series_parallel_freq_error;
//        }
//          
//        gc.u32Current_freq = gc.u32first_scan_maxcurrent_freq+gc.s32first_series_parallel_freq_error*1/3;// 频率提高到焊头频率宽度的1/4后，50ms 后采相位  ，以最大电流时的频率为谐振点
//        gc.u8first_scan_freq_F=1;    //扫频进入谐振范围
//        gc.delay_ms_cnt =0;          //复用这个计数器             
//          
//      }         
//      else
//      {
//      
//        gc.u8first_scan_en=0;     //扫频使能
//        gc.Work_cmd =0;           //扫频 粗扫失败关机    
//        gc.u32Current_freq = (gc.u32sysfreq+1)*gc.Freq_K;       
//        test_short_press =0;//清除测试开关指令
//        err_handle(10004);      //扫描失败报错 串并联谐振点的频率差不正常            
//        
//      }    
//    }  
//  }
//  
//  else if ( gc.u8first_scan_freq_F==1  ) //以当前频率工作采样相位，因为工作频率在谐振点右侧所以相位应该为负
//  {
////扫频进入谐振范围后定定时加频率，直到低于电流<200 
//    gc.u8first_scan_freq_cnt++;
//    if ( gc.u8first_scan_freq_cnt >3 )
//    {
//      gc.u8first_scan_freq_cnt=0;
//      
//      if (  ( gc.u32Adc_CH4[0] + gc.u32Adc_CH4[1] )/2 > gc.first_f_val_ref  )
//      {
//        gc.u32Current_freq+=10;    
//      }
//    }
//
//
//    if (  gc.delay_ms_cnt < 25   )
//    {
////=======================判断传感器方向=========================================
//      gc.u8current_sense_pn =0;
//      gc.u8first_current_sense_pn = sense_check();              //采极性    
//    }
//    else if ( gc.delay_ms_cnt < 35  )
//    {
//      gc.Work_cmd =3;   //扫频 粗扫失败关机          
////      gc.test_long_press =0;
////      gc.test_short_press =0;//清除测试开关指令      
//    }
//  }  
//}
//  
//
//
